/*
 * Copyright (c) 2005 Mike Bridge <mike@bridgecanada.com>
 * 
 * Permission is hereby granted, free of charge, to any 
 * person obtaining a copy of this software and associated 
 * documentation files (the "Software"), to deal in the 
 * Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, 
 * distribute, sublicense, and/or sell copies of the 
 * Software, and to permit persons to whom the Software 
 * is furnished to do so, subject to the following 
 * conditions:
 *
 * The above copyright notice and this permission notice 
 * shall be included in all copies or substantial portions 
 * of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 
 * ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
 * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 
 * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 
 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 
 * OR OTHER DEALINGS IN THE SOFTWARE.
 */

using System;
using System.Text;

namespace DotNetOpenMail
{
	/// <summary>
	/// A boundary which delimits a MIME object.
	/// </summary>
	internal class MimeBoundary
	{
		protected static readonly String MimeChars="abcdefghijklmnopqrstuvwxyz0123456789";
		private String _theboundary=null;
		private static Random random=new Random();

		public MimeBoundary()
		{
			_theboundary=MakeMimeBoundary();
		}

		public String BoundaryString
		{
			get 
			{
				return _theboundary;
			}
		}

		public String BoundaryStringStart
		{
			get 
			{
				return "--"+_theboundary;
			}
		}

		public String BoundaryStringEnd
		{
			get 
			{
				return "--"+_theboundary+"--";
			}
		}

		private String MakeMimeBoundary() 
		{
			int mimelength=32;
			StringBuilder sb=new StringBuilder();
			for (int i=0; i<MimeBoundary.MimeChars.Length; i++) 
			{
				sb.Append(MimeChars[random.Next(mimelength)]);
				
			}
			return "_=DotNetOpenMail=_"+sb.ToString();
		}


	}
}
